"""
A simple example of an animated plot
"""
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation

k1 = np.zeros((2,400))*10
k2 = np.zeros((2,400))*10
fig = plt.figure()
ax = plt.axes(xlim=(-0, 30), ylim=(-0, 20))
line, = ax.plot([], [],'r*', lw=2) 
def init():
    global line
    line.set_data([], [])
    # line.set_data([], [])
    return line,
# animation function. This is called sequentially
# It takes a single parameter, the frame number i 
def animate(i):
    global k1,k2
    x = [k1[0,i] , k2[0,i]]
    y = [k1[1,i] , k2[1,i]]# update the data
    # print(x,y)
    # plt.show()
    line.set_data(x, y)
    return line,

def main(data1,data2):
    # First set up the figure, the axis, and the plot element we want to animate
    # create our line object which will be modified in the animation
    # ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
    # we simply plot an empty line: we'll add data to the line later
    # line, = ax.plot([], [],'r*', lw=2) 
    # initialization function: plot the background of each frame
    # Makes an animation by repeatedly calling a function func
    # frames can be a generator, an iterable, or a number of frames.
    # interval draws a new frame every interval milliseconds.
    # blit=True means only re-draw the parts that have changed.
    # 在这里设置一个400帧的动画，每帧之间间隔20毫秒
    global fig,k1,k2
    k1 = data1
    k2 = data2
    anim = animation.FuncAnimation(fig, animate, init_func=init,
            frames=400, interval=20, blit=True)
    # save the animation as an mp4. This requires ffmpeg or mencoder to be
    # installed. The extra_args ensure that the x264 codec is used, so that
    # the video can be embedded in html5. You may need to adjust this for
    # your system: for more information, see
    # http://matplotlib.sourceforge.net/api/animation_api.html
    anim.save('basic_animation.mp4', fps=30, extra_args=['-vcodec', 'libx264'])
    
    plt.show() # plt.show() 会一直循环播放动画

if __name__ == '__main__':
    main()
